//#include <iostream>
//#include <cstring>
//
//using namespace std;
//
//const int N = 50010, M = 110;
//
//int f[M][N];
//int n, m, v[M], w[M];
//
//int main()
//{
//	cin >> n >> m;
//	for(int i = 1; i <= n; i++) cin >> v[i] >> w[i];
//	memset(f, 0x3f, sizeof f);
//	f[0][0] = 0;
//	for(int i = 1; i <= n; i++)
//	{
//		for(int j = 0; j <= m; j++)
//		{
//			f[i][j] = min(f[i - 1][j], f[i][max(j - v[i], 0)] + w[i]);
//		}
//	}
//	cout << f[n][m] << endl;
//	return 0; 	
//} 

#include <iostream>

using namespace std;

const int N = 50100;

int f[110][N];
int n, m, v[110], w[110];

int main()
{
	cin >> n >> m;
	for(int i = 1; i <= n; i++) cin >> v[i] >> w[i];
	for(int i = 1; i <= m; i++) f[0][i] = 0x3f3f3f3f;
	for(int i = 1; i <= n; i++)
	{
		for(int j = 0; j <= m; j++)
		{
			f[i][j] = min(f[i - 1][j], f[i][j - v[i]] + w[i]);
		}
	}
	if(f[n][m] < 0x3f3f3f3f) cout << f[n][m] << endl;
	else cout << 0 << endl;
	return 0; 	
} 
